10921. Найти телефон
В некоторых телефонах номера
ассоциируются с буквами. Например, фраза MY LOVE может означать номер 69 5683. Проблема состоит в том, что
телефонный номер не всегда ассоциируется со словом или фразой, а цифры 1 и 0
вообще не связаны ни с какой буквой.
буква |
ABC |
DEF |
GHI |
JKL |
MNO |
PQRS |
TUV |
WXYZ |
цифра |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Имеется
выражение, состоящее из заглавных букв латинского алфавита, дефисов и цифр 0 и
1. Необходимо найти соответствующий ему телефонный номер.
Вход. Каждая
строка содержит выражение, состоящее из
заглавных букв латинского алфавита, дефисов и цифр 0 и 1. Каждое выражение
содержит не более 30 символов.
Выход. Для каждого выражения вывести
соответствующий ему телефонный номер.
1-HOME-SWEET-HOME
MY-MISERABLE-JOB
Пример выхода
1-4663-79338-4663
69-647372253-562
обработка строк
Создадим массив code, хранящий
отображения букв в цифры. Далее для каждого выражения заменяем все
встретившиеся в нем буквы на соответствующие цифры.
В массиве code содержатся цифры,
соответствующие буквам: code[i]
содержит код буквы ‘A’ + i. Строковый
массив s содержит входное выражение.
char code[26] =
{'2','2','2','3','3','3','4','4','4','5','5','5','6','6',
'6','7','7','7','7','8','8','8','9','9','9','9'};
char s[31];
Основной цикл программы. Читаем
входное выражение в строку s. Просматриваем строку s слева направо и для каждую букву s[i] заменяем на соответствующую цифру code[s[i]-'A'].
while(scanf("%s",s) == 1)
{
for(i=0;i<strlen(s);i++)
if (isalpha(s[i]))
s[i] = code[s[i]-'A'];
printf("%s\n",s);
}